package samplejava.compiler;

import java.util.ArrayList;

public abstract class ETipo {

	int idtipo;
	
	public static final int NIL = -1;

	public ETipo() {
		this.idtipo = Tipos.VOID;
	}
	
	public ETipo(int tipo) {
		this.idtipo = tipo;
	}
	
	public int getIdTipo() {
		return idtipo;
	}
	
	public void setIdTipo(int tipo) {
		this.idtipo = tipo;
	}
	
	public int getSize() {
		return Tipos.getSize(this.getIdTipo());
	}
	
	public String getStringTipo() {
		return Tipos.getTipoStr(idtipo);
	}
	
	public abstract long getValue();
	public abstract void setValue(long value);
	public abstract long getDecimalValue();
	public abstract void setDecimalValue(long value);
	
	//metodos para ETipo_Pointer
	public abstract ETipo getApuntado();
	public abstract int getIndice();
	public abstract void setIndice(int i);
	public abstract ArrayList<ETipo> getPuntero();
	public abstract void setPuntero(ArrayList<ETipo> puntero);
	public abstract int getIdApuntado();
	public abstract void setNewPuntero(int tipo_apuntado, int n);
	public abstract void setNewPuntero(int tipo_apuntado);
	public abstract void setNewPuntero(int tipo_apuntado, long value, long decimal);
	
	public abstract String toString();
	
}

